
// https://leetcode.cn/problems/UHnkqh/submissions/423120974/

// 接收一个节点，返回一个节点，走一遍就反转了



 class ListNode {
    val:number;
    next : ListNode | null;
    constructor(val?:number, next?:ListNode | null){
        this.val = val === undefined ? 0 : val;
        this.next = next === undefined ? null : next;
    }
}
function reverseList(head: ListNode | null): ListNode | null {
    //如最后一个为null（链表为null）或者尾部节点（倒数）直接返回
    if (head === null || head.next === null) return head;
    //递归，其返回值就是上面的最后一个节点
    const newHead = reverseList(head?.next ?? null);
    // 走到这里的时候head为倒数第二个节点，这里的时候head不为null，即为倒数第二个节点
    // 让最后一个节点指向倒数第二个节点，让倒数第二个节点指向null，这样下次递归的时候，倒数第二个就成为最后一个节点了
    //这里是倒数第二个节点，让其下一个节点（即最后一个节点指向自己）
    head.next.next = head;
    //让其指向null（这样在下次递归的时候，其就变成最后一个节点了）
    head.next = null;
    return newHead
};


export default {}